事實上 add rd, rs, rt 和 addu rd, rs, rt 這兩條指令就是在於 Cout 的處理方式上有所不同
溢出,又稱為 Overflow 表示運算結果超出了正常的表示範圍
而 Overflow 是特別指在 sign value 計算時產生
兩正數相加其結果為負,以及兩負數相加其結果為正的狀況
因為在計算機中我們只能用有限的位元來表示數值
但是在經過運算之後很可能就會產生超過可表示範圍的數
需要注意的是有進位不一定有溢出,有溢出也不代表一定有進位
而溢出的檢查方式就是判斷最高位的進位輸入是否等於最高位的進位輸出
如此一來就在 C31 和 Cout 上分別拉一條線,通過 XOR 邏輯閘就可以知道是否相同
硬體實際上對於有符號或是無符號數的加法處理都是相同的
是否要對溢出做相關處理是由程式設計師來控制
在不同的指令體系中對溢出也有不同的處理方式
MIPS 就是使用前面所提到的提供兩種不同的指令分別作預先處理
若是 add 或 addi 的指令,當發生溢出時控制信號就會當作異常狀況來處理
而如果是 addu 或是 addiu 就不會特別去檢查溢出的信號了
另外在 x86 的架構下就不太相同,他並沒有將指令分成兩種
而是會在產生溢出後將標誌暫存器中的溢出標誌 (Overflow Flag) 設定成 1
再由下一條指令去判斷當 OF=1 時要做什麼處理